// 生命周期
export const HOOKS = [
    'beforeCreate',
    'created',
    'beforeMount',
    'mounted',
    'beforeUpdate',
    'updated',
    'beforeDestroy',
    'destroyed',
]
let starts = {}
// 合并data
starts.data = function (parentVal,childVal) {
    return childVal
}
// 合并computed
// starts.computed = function () {
//     console.log('合并computed')
// }
// 合并watch
// starts.watch = function () {
    
// }
// 合并methods
starts.methods = function () {
    
}
// 遍历生命周期
HOOKS.forEach(hooks=>{
    starts[hooks] = mergeHook
})
// 合并生命周期
function mergeHook(parentVal,childVal) {
    if(childVal){
        if(parentVal){
            return parentVal.concat(childVal)
        } else {
            return [childVal]
        }
    } else {
        return parentVal
    }
}
export function mergeOptions(parent,child) {

    const options = {}
    // 如果有父亲没有儿子
    for (const key in parent) {
        mergeField(key)
    }

    // 儿子有父亲没有
    for (const key in child) {
        mergeField(key)
    }

    function mergeField(key) {
        // 根据key 策略模式
        if(starts[key]){
            options[key] = starts[key](parent[key],child[key])
        } else {
            options[key] = child[key] || parent[key]
        }
    }
    
    return options
}